// phalanx rvalue.hpp.cu header file

// Copyright (c) 2010 - 2011 Kohei Takahashi (Flast).
// Distributed under the MIT license. for more detail see COPYING.

#ifndef IG_PHALANX_MOVE_DETAIL_RVALUE_HPP_CU_ONCE_
#define IG_PHALANX_MOVE_DETAIL_RVALUE_HPP_CU_ONCE_

#include <phalanx/config.hpp.cu>

namespace phalanx
{

namespace move_detail
{

template < typename T >
struct rv_
  : public T {};

#define PHALANX_RV_REF( T_ ) \
  ::phalanx::move_detail::rv_< T_ > &

#define PHALANX_LV_REF( T_ ) T_ &

#define PHALANX_LV_CREF( T_ ) const PHALANX_LV_REF( T_ )

#define PHALANX_COPY_ASSIGN_REF PHALANX_LV_CREF

} // namespace move_detail

} // namespace phalanx

#endif // IG_PHALANX_MOVE_DETAIL_RVALUE_HPP_CU_ONCE_

